package muhnes.sizoo.dal;

import muhnes.sizoo.HibernateUtilZoologia;
import muhnes.sizoo.modelo.Zona;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 * Clase que implementa los metodos definidos en ZonaDao
 * @author Ricardo Orellana
 */
public class ZonaDaoImpl extends GenericoDAO< Zona, Integer >  
                         implements ZonaDao {
    
    public ZonaDaoImpl() {
        super( HibernateUtilZoologia.getSessionFactory() );
    }

    @Override
    protected Class<?> getClaseEntidad () {
        return Zona.class;
    }

    /**
     * Método qye verifica la unicidad de las zonas
     *  
     */
    @Override
    public boolean verificarUnicidad(Zona entidad) {
        Session sesion = fabricaSesion.getCurrentSession();        
        String hql = "from Zona " +
                     "where codigozona != :codigo " +
                     "and upper(localidad) = :localidad " +
                     "and codigomunicipio = :municipio";
        Query consulta = sesion.createQuery( hql );
        consulta.setParameter("codigo",entidad.getCodigozona());
        consulta.setParameter("localidad", entidad.getLocalidad().toUpperCase());
        consulta.setParameter("municipio", entidad.getMunicipio().getCodigomunicipio());
        return consulta.uniqueResult() != null ? true : false;
        
    }
    
    /**
     * Método que verifica la dependendia de las zonas
     *  
     */
    @Override
    public boolean verificarDependencia (Zona entidad) {
        return false;
    }
    
}
